热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

近邻|神经元_神经网络入门(详细)

篇首语:本文由编程笔记#小编为大家整理,主要介绍了神经网络入门(详细)相关的知识,希望对你有一定的参考价值。文章目录

篇首语:本文由编程笔记#小编为大家整理,主要介绍了神经网络入门(详细 )相关的知识,希望对你有一定的参考价值。



文章目录


    • 机器学习流程
        • 传统特征提取方法:
        • 为什么需要深度学习


    • 图像分类
      • 计算机视觉面临的挑战
      • 机器学习常规套路

    • K近邻
      • K近邻算法
      • K近邻计算流程:
      • K近邻分析
        • 距离的选择:
        • 为什么K近邻不能用来图像分类?


    • 神经网络基础
      • 线性函数
        • 计算方法

      • 损失函数
        • 损失函数





          L


          i



          =







          j






          y


          i





          m


          a


          x


          (


          0


          ,



          s


          j







          s



          y


          i




          +


          1


          )



          L_i=\\sum_j\\ne y_imax(0,s_j-s_y_i+1)


          Li=j=yimax(0,sjsyi+1)
        • 正则化惩罚项
        • Softmax分类器

      • 前向传播
      • 反向传播
        • 链式法则
        • 复杂的例子

      • 整体结构
        • 正则化的作用
        • 参数个数对结果的影响
        • 激活函数
        • 数据预处理
        • 参数初始化
        • DROP-OUT(传说中的七伤拳)


    • 线性回归
      • 梯度下降




机器学习流程



机器学习需要人工选取数据,提取数据。
深度学习是机器学习的一部分。



  • 数据获取
  • 特征工程
    数据特征决定了模型的上限
    预处理和特征提取是最核心的
    算法与参数选择决定了如何逼近这个上限
  • 建立模型
  • 评估与应用

传统特征提取方法:


为什么需要深度学习


·解决核心是,如何去提取特征


图像分类


计算机视觉面临的挑战


  • 照射角度
  • 性状改变
  • 部分遮蔽
  • 背景混入

机器学习常规套路


  1. 收集数据并给定标签
  2. 训练一个分类器
  3. 测试,评估

K近邻


K近邻算法

数据:两类点方块和三角
绿色的点属于方块还是三角呢?
K=3还是K=5?结果一样吗?


K近邻计算流程:


  1. 就算已知类别数据集中的点与当前点的距离
  2. 按照距离依次排序
  3. 选取与当前点距离最小的K个点
  4. 确定前K个点所在类别的出现概率
  5. 返回前K个点出现频率最高的类别作为当前点预测分类

K近邻分析

KNN 算法本身简单有效,它是一种 lazy-learning 算法。
分类器不需要使用训练集进行训练,训练时间复杂度为0。
KNN 分类的计算复杂度和训练集中的文档数目成正比,也就是说,如果训练集中文档总数为 n,那么 KNN 的分类时间复杂度为O(n)。
K 值的选择,距离度量和分类决策规则是该算法的三个基本要素。


距离的选择:

L1 distance:





d


1



(



I


1



,



I


2



)


=






p







I


1


p







I


2


p







d_1(I_1,I_2)=\\sum_p \\vert I_1^p - I_2^p \\vert


d1(I1,I2)=pI1pI2p


为什么K近邻不能用来图像分类?

背景主导是一个最大的问题,我们关注的却是主体(主要成分)
如何才能让机器学习到哪些是重要的成分呢?


神经网络基础


线性函数

从输入 --> 输出的映射


计算方法


什么样的 W 更适合我们的预期目标


损失函数

如何衡量分类的结果呢?

结果的得分值有着明显的差异,我们需要明确的指导模型的当前效果,有多好或是多差!

如果损失函数的值相同,那么意味着两个模型一样吗?



在训练过程中,关注权重参数是否会发生变异,发生过拟合



损失函数





L


i



=







j






y


i





m


a


x


(


0


,



s


j







s



y


i




+


1


)



L_i=\\sum_j\\ne y_imax(0,s_j-s_y_i+1)


Li=j=yimax(0,sjsyi+1)

损失函数其实有很多种,我们来实验一个









S


j




S_j


Sj
错误类别,





S



y


i





S_y_i


Syi
正确类别





Δ



\\Delta


Δ
表示容忍程度



正则化惩罚项


神经网络的缺点就是太强了








λ



\\lambda


λ
越大,抑制效果越强



Softmax分类器

现在我们得到的是一个输入的得分值,但如果给我一个概率值岂不更好!

如何把一个得分值转换成一个概率值呢?

归一化:




P


(


Y


=


k





x


=



x


i



)


=





e


s



k








j




e


s



j





P(Y=k|x=x_i)= e^sk \\over \\sum_je^sj


P(Y=kx=xi)=jesjesk







\\qquad


where



  


\\;







s


=


f


(



x


i



;


W


)



s=f(x_i;W)


s=f(xi;W)

计算损失值:





L


i



=





l


o


g


P


(


Y


=



y


i






X


=



x


i



)



L_i=-logP(Y=y_i|X=x_i)


Li=logP(Y=yiX=xi)


交叉熵损失函数
通过对数函数求损失


前向传播


反向传播



从后往前,逐层逐步传播


加法门单元:均等分配
MAX门单元:给最大的
乘法门单元:互换的感觉


链式法则

梯度是一步一步传的
·


复杂的例子


整体结构


非线性:激活函数sigmod、max、relu等

基本结构:




f


=



W


2



m


a


x


(


0


,



W


1



x


)



f=W_2max(0,W_1x)


f=W2max(0,W1x)

继续堆叠一层:




f


=



W


3



m


a


x


(


0


,



W


2



m


a


x


(


0


,



W


1



x


)


)



f=W_3max(0,W_2max(0,W_1x))


f=W3max(0,W2max(0,W1x))

神经网络的强大之处在于,用更多的参数来拟合复杂的数据
(参数多到多少呢?百万级别都是小儿科,但是参数越多越好吗?)

神经元个数越多,得到的过拟合成对越大,在计算机上得到的效果可能会越好,运行速度相对会变慢。
https://cs.stanford.edu/people/karpathy/convnetjs/demo/classify2d.html


正则化的作用



惩罚力度加大,W更加正常,边界更加平滑,防止过拟合



参数个数对结果的影响


激活函数

非常重要的一部分

常用的激活函数(Sigmoid,Relu,Tanh等)

激活函数对比



Sigmod 函数可能会造成梯度消失
现在市面上多采用 Relu 函数及其变式



数据预处理

不同的预处理结果会使得模型的效果发生很大的差异。


参数初始化

参数初始化同样非常重要

通常我们都使用随机策略来进行参数初始化





W


=


0.01





n


p


.


r


a


n


d


o


m


.


r


a


n


d


n


(


D


,


H


)



W = 0.01* np.random.randn(D,H)


W=0.01np.random.randn(D,H)



让W值尽可能比较小,平滑



DROP-OUT(传说中的七伤拳)

过拟合是神经网络非常头疼的一个大问题!

在每一轮训练中,随机选择一些神经元杀死。
在训练中,每层每一次随机选择一部分杀死。


线性回归


梯度下降

目标函数:




J


(



θ


0



,



θ


1



)


=



1



2


m








1


m



(



h


θ



(



x



(


i


)








y



(


i


)




)


)



J(\\theta_0,\\theta_1) = 1 \\over 2m\\sum_1^m(h_\\theta(x^(i)-y^(i)))


J(θ0,θ1)=2m11m(hθ(x(i)y(i)))

寻找山谷的最低点,也就是我们的目标函数终点(什么样的参数能使得目标函数达到极值点)
下山分几步走呢?(更新参数)
(1):找到当前最合适的方向
(2):走那么一小步,走快了该“跌倒”了
(3):按照方向与步伐去更新我们的参数


推荐阅读
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 本文介绍了安全性要求高的真正密码随机数生成器的概念和原理。首先解释了统计学意义上的伪随机数和真随机数的区别,以及伪随机数在密码学安全中的应用。然后讨论了真随机数的定义和产生方法,并指出了实际情况下真随机数的不可预测性和复杂性。最后介绍了随机数生成器的概念和方法。 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 数据结构与算法的重要性及基本概念、存储结构和算法分析
    数据结构与算法在编程领域中的重要性不可忽视,无论从事何种岗位,都需要掌握数据结构和算法。本文介绍了数据结构与算法的基本概念、存储结构和算法分析。其中包括线性结构、树结构、图结构、栈、队列、串、查找、排序等内容。此外,还介绍了图论算法、贪婪算法、分治算法、动态规划、随机化算法和回溯算法等高级数据结构和算法。掌握这些知识对于提高编程能力、解决问题具有重要意义。 ... [详细]
author-avatar
张心虚要加油
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有